﻿using System.Drawing;
using System.Windows.Forms;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using WindowsFormsGUI.Entidades;

namespace TestProject
{
    /// <summary>
    /// Summary description for UnitTest1
    /// </summary>
    [TestClass]
    public class EntrenarRNA
    {
        [TestMethod]
        public void AprenderMoneda1PesoCara()
        {
            var pictureBox = new PictureBox();
            pictureBox.Load(@"D:\1c.jpg");

            var bitmap = new Bitmap(pictureBox.Image);
            var imagenProcesada = ProcesadorDeImagen.ConvertirImagenAMapaDeBit(bitmap);
            var arreglo = ProcesadorDeImagen.ConvertirImagenEnArregloDeFloat(imagenProcesada);
                       
            var red = new HopfieldNetwork(arreglo.Length);
            red.Train(arreglo);

            ProcesadorDeImagen.Agregar(new ImageMonedaRecordada(arreglo, CaraSecaEnum.UnPesoCara));

            var moneda = ProcesadorDeImagen.Clasificar(pictureBox.Image);
            
            Assert.IsTrue(moneda.Denominacion == DenominacionEnum.UnPeso);
        }

        [TestMethod]
        public void AprenderMoneda50CentavosCara()
        {
            var pictureBox = new PictureBox();
            pictureBox.Load(@"D:\50c.jpg");

            var bitmap = new Bitmap(pictureBox.Image);
            var imagenProcesada = ProcesadorDeImagen.ConvertirImagenAMapaDeBit(bitmap);
            var arreglo = ProcesadorDeImagen.ConvertirImagenEnArregloDeFloat(imagenProcesada);

            var red = new HopfieldNetwork(arreglo.Length);
            red.Train(arreglo);

            ProcesadorDeImagen.Agregar(new ImageMonedaRecordada(arreglo, CaraSecaEnum.CincuentaCentavosCara));

            var moneda = ProcesadorDeImagen.Clasificar(pictureBox.Image);

            Assert.IsTrue(moneda.Denominacion == DenominacionEnum.CincuentaCentavos);
        }

        [TestMethod]
        public void AprenderMoneda1PesoSelloY50CentavosCaraYReconocer1PesoSello()
        {
            var pictureBox1 = new PictureBox();
            pictureBox1.Load(@"D:\1s.jpg");

            var bitmap = new Bitmap(pictureBox1.Image);
            var imagenProcesada = ProcesadorDeImagen.ConvertirImagenAMapaDeBit(bitmap);
            var arreglo = ProcesadorDeImagen.ConvertirImagenEnArregloDeFloat(imagenProcesada);

            var red = new HopfieldNetwork(arreglo.Length);
            red.Train(arreglo);

            ProcesadorDeImagen.Agregar(new ImageMonedaRecordada(arreglo, CaraSecaEnum.UnPesoCara));

            var pictureBox2 = new PictureBox();
            pictureBox2.Load(@"D:\50c.jpg");

            bitmap = new Bitmap(pictureBox2.Image);
            imagenProcesada = ProcesadorDeImagen.ConvertirImagenAMapaDeBit(bitmap);
            arreglo = ProcesadorDeImagen.ConvertirImagenEnArregloDeFloat(imagenProcesada);

            red = new HopfieldNetwork(arreglo.Length);
            red.Train(arreglo);

            ProcesadorDeImagen.Agregar(new ImageMonedaRecordada(arreglo, CaraSecaEnum.CincuentaCentavosCara));

            var moneda1 = ProcesadorDeImagen.Clasificar(pictureBox1.Image);
            Assert.IsTrue(moneda1.Denominacion == DenominacionEnum.UnPeso);           
        }
    }
}
